package com.reflect;

import org.junit.Test;

import java.lang.reflect.Field;

/**
 * 反射获取对象成员变量
 */

public class FieldDemo1 {
    public static void main(String[] args) {
        //1.获取全部成员变量：getDeclaredFileds（）

        //2.获取一个成员变量  getDeclaredFiled（String name）:通过名称定为某个成员变量
    }
    @Test
    /**
     * 1.获取全部成员变量
     */
    public void getDeclaredFields(){
        Class c= Student.class;
        Field[] declaredFields = c.getDeclaredFields();
        for (Field field : declaredFields) {
            System.out.println(field.getName()+"--->"+field.getType());
        }
    }




    @Test
    /**
     * 2.获取一个成员变量
     */
    public void getDeclaredField() throws Exception {
        Class c=Student.class;
        //根据成员变量名称爱获取成员变量
        Field name = c.getDeclaredField("name");


        Student student=new Student();
        //暴力打开权限
        name.setAccessible(true);

        //赋值：set（）
        name.set(student,"凌毅");
        System.out.println(name);

        //取值：get()
        System.out.println(name.get(student));


    }
}
